package org.novelhibernate.support.logging;

import java.lang.reflect.Method;

import org.novelhibernate.exception.NovelhibernateException;

public interface GenericLogFactory {

	public void doGeneralLoggingTasks(Method method, String logMess,
			Object... args);

	public void doExceptionLoggingTasks(Method method, String logMess,
			Throwable t, Object... args);

	public Object exceptionCallback(Object target, Method method, Throwable t,
			Object[] args, Class<?> instance) throws Throwable;

	public void finallizationCallback(FinallizedObject finalObject,
			boolean isHandleException) throws Throwable;

	public void setDefaultExceptionHandler(String id, DefaultExceptionHandler handler) throws NovelhibernateException;

	public DefaultExceptionHandler getDefaultExceptionHandler(String id);
}
